package model.proxy
{
	import model.Enseignant;
	import model.Utilisateur;
	
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.controls.Alert;
	import mx.rpc.remoting.mxml.RemoteObject;
	
	import org.puremvc.as3.interfaces.IProxy;
	import org.puremvc.as3.patterns.proxy.Proxy; 
	
	public class ProfilEnseignantProxy extends Proxy implements IProxy 
	{ 
		
		public static const NAME : String = 'ProfilEnseignantProxy';		
		public static const LISTE_SERVICES_OBTENUE : String = "ListeServicesObtenue";
		public static const UTILISATEUR_MODIFIE : String = "UtilisateurModifie";
		private var remoteObject : RemoteObject = null;
		private var remoteObjectEnseignant : RemoteObject = null;
		private var remoteObjectSession : RemoteObject = null;
		
		/** 
		 * Constructor 
		 * We create the table logins and insert a login by default to test 
		 */ 
		public function ProfilEnseignantProxy(data:Object=null) 
		{ 
			super(NAME, data);
			
			remoteObject = new RemoteObject();
			remoteObject.destination = "RemoteServiceService";
			remoteObject.source = "RemoteServiceService";
			remoteObject.endpoint = ApplicationFacade.SERVEUR;
			
			remoteObjectEnseignant = new RemoteObject();
			remoteObjectEnseignant.destination = "RemoteServiceEnseignant";
			remoteObjectEnseignant.source = "RemoteServiceEnseignant";
			remoteObjectEnseignant.endpoint = ApplicationFacade.SERVEUR;
			
			remoteObjectSession = new RemoteObject();
			remoteObjectSession.destination = "RemoteServiceSession";
			remoteObjectSession.source = "RemoteServiceSession";
			remoteObjectSession.endpoint = ApplicationFacade.SERVEUR;
		} 
 		
 		
 		
 		 public function obtenirListeServices(enseignant:Enseignant) : void 
 		{
 			remoteObject.addEventListener(ResultEvent.RESULT, listeServicesObtenue);
			remoteObject.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObject.obtenirListeServices(enseignant);
 		}
		
		public function validerModifInformations(utilisateur:Utilisateur, enseignant:Enseignant):void
		{
			remoteObjectSession.addEventListener(ResultEvent.RESULT,utilisateurModifie);
			remoteObjectSession.addEventListener(FaultEvent.FAULT, onFault);
 			remoteObjectSession.modifierInformationsEnseignant(utilisateur, enseignant);
 			
		}
		
		
		private function listeServicesObtenue(event:ResultEvent):void
		{
			var listeServices:Array = (event.result as Array)
			sendNotification(LISTE_SERVICES_OBTENUE, listeServices);
		}
		
	  	private function utilisateurModifie(event:ResultEvent):void
		{
			var user_modif:Utilisateur = (event.result as Utilisateur)
			sendNotification(UTILISATEUR_MODIFIE, user_modif);
			Alert.show("Modifications Effectuées");
		}
				
				
		private function onFault(event:FaultEvent):void
		{
			Alert.show("Erreur");
			trace("Fault");			
		}	
	}
}